package server

import (
	"beego_base_demo/JsonCfg"
	"beego_base_demo/protobuf/PB"
	"beego_base_demo/tcpCon"
	"fmt"
	"net"
)

type Addr struct {
	Host string `json:"host"`
	port string `json:"port""`
}


func Run()  {
	var addr Addr
	JsonCfg.LoadCfg(addr,"cfg\\serverAddr.json")
	Accept()
}
type handleFunc func(request *PB.Packet,response *PB.Packet)
var mapCommand map[int32]handleFunc

func Accept()  {
	listen, err := net.Listen("tcp", ":1124")
	if err!=nil {
		fmt.Println(err)
		return
	}
	for{
		conn, err := listen.Accept() // 创建用户数据通信的socket
		if err != nil {
			fmt.Println(err)
			return
		}
		go tcpCon.Read(conn)
	}


}

// RegisterMsg 提供一个注册接口吧 新消息就不用更改server代码
func RegisterMsg(msg int32,handleFunc2 handleFunc)  bool{
	if _,ok:=mapCommand[msg];ok{
		return false
	}else {
		mapCommand[msg]=handleFunc2
		return true
	}
}

func HandlePacket(request *PB.Packet,response *PB.Packet)  {
	//目前就处理 登录 使用和获得物品 和退出吧   修改密码和注册走http试一下
	if _,ok:=mapCommand[request.Command];ok{
		mapCommand[request.Command](request,response)
	}else{
		fmt.Println(ok)
	}
}